#ifndef FILE_se_Instance_HPP
#define FILE_se_Instance_HPP

#include "SimpleObject.hpp"
#include "../Graphics.hpp"
#include <string>

namespace se {

class Instance
{
    public:

        void Run(); // to call in each loop
        void Pause(); // pause the animations and the timers
        void Resume(); // unpause the animations and the timers


        //faire plusieurs surcharges pour la recherche
        std::vector<SimpleObject*> GetObjects(); // to get all objects in the instance
        std::vector<SimpleObject*> GetObjects(Position p, float dist); // to get all objects in the instance and in a range
        std::vector<SimpleObject*> GetObjects(SimpleObject* object); // to get all objects touching the object object
        std::vector<SimpleObject*> GetObjects(std::string type); // to get all objects of a type in the instance
        std::vector<SimpleObject*> GetObjects(std::string type, Position p, float dist); // to get all objects of a type in the instance and in a range
        std::vector<SimpleObject*> GetObjects(std::string type, SimpleObject* object); // to get all objects of a type touching the object object

        void AddObject(SimpleObject* object); // add an object in the instance

        void RemObject(SimpleObject* object); // remove an object from the instance, cast an error if the object isn't found

    protected:

        std::vector<SimpleObject*> m_objects;
        Graphics::DrawingInstance* m_drawInst;
        std::vector<System::Chrono*> m_chronos;

};

}//</namespace se>


#endif // FILE_se_Instance_HPP
